package main

import (
	"5title_gin/cmd/cli"
	"5title_gin/config"
	"5title_gin/config/core"
	_ "5title_gin/docs"
	"5title_gin/global"
	"5title_gin/internal/api/routers"
	"5title_gin/pkg/storage"
	"fmt"
	"github.com/common-nighthawk/go-figure"
	"go.uber.org/zap"
)

// @title 5titleAdmin项目api文档
// @version 1.0
// @description 5titleAdminAPI文档
// @host 127.0.0.1:8080
// @BasePath /
func main() {
	fmt.Println("🚀 服务器启动中... (ฅ'ω'ฅ) 💨")
	// 创建一个新的 figure 对象，选择字体和文本
	myFigure := figure.NewFigure("5title-gin", "slant", true) // 修改字体名
	// 打印 ASCII 艺术
	myFigure.Print()
	// 初始化日志
	log := core.InitLog() // ⚡️ 这个要先调用，否则 `zap.S()` 可能会报空指针
	defer func(log *zap.Logger) {
		err := log.Sync()
		if err != nil {
		}
	}(log)

	cli.Parse()

	// 读取配置
	global.Config = config.ReadConfig()
	if global.Config == nil {
		zap.S().Warn("读取配置失败，程序退出") // ❌ 重大错误，直接退出
	}

	// 初始化存储
	global.Storage, _ = storage.NewStorage(global.Config)

	// 初始化数据库配置
	global.DB = core.InitGorm()
	// 初始化redis配置
	global.Redis = core.InitRedis()
	cli.Run()
	routers.Run()

}
